<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>对象原型</title>
</head>
<body>
<h3>对象原型</h3>
<p>
    对象都会有一个属性 __proto__ , 指向构造函数的 prototype 原型对象， <br>
    之所以我们实例对象 可以使用构造函数 prototype 原型对象的属性和方法， <br>
    就是因为对象有 __proto__ 指向原型对象的存在。
</p>
<p>
    注意： <br>
    __proto__ 是JS非标准属性 <br>
    [[prototype]]和__proto__意义相同 <br>
    用来表明当前实例对象指向哪个原型对象prototype <br>
    __proto__对象原型里面也有一个 constructor属性，指向创建该实例对象的构造函数
</p>
<hr>

<p>
    特别说明: 实例对象 包含 对象原型 (2个概念) <br>
    对象原型 里有 __proto__属性, 指向 构造函数的 原型对象
</p>
<script>
    function 一个构造函数() {
        // 声明 一个函数,先不写东西
    }

    // 实例化 一个对象
    const 姓名 = new 一个构造函数()
    console.log(姓名) // 对象 展开有一个 [[Prototype]] 属性, 这个属性就是 __proto__

    // 对象原型 __proto__属性, 指向 构造函数的原型对象
    console.log(姓名.__proto__ === 一个构造函数.prototype) // true

    // 对象原型里面有 constructor属性, 指向 构造函数
    console.log(姓名.__proto__.constructor === 一个构造函数) // true
</script>
</body>
</html>